/*
 * This is the GUI to Controller INTERFACE
 */
package ctrlr;

import java.io.File;
import java.nio.file.Path;
import java.util.ArrayList;

/**
 *
 * @author Nana
 */
public interface ChatGUI2Ctrlr {
    
    /**
    * Process a connection request from the GUI to the Controller
    * @param username The username of the local user
    */
    public void performConnect( String username );
    
    /**
    * Process a disconnection request from the GUI to the Controller
    * @param username The username of the local user
    */
    public void performDisconnect( String username );
    
    /**
    * Sends a text message to the Controller
    * @param message The message to send
    * @param to The list of receivers
    */     
    public void performSendTextMessage ( String message, ArrayList<String> to);

    /**
     * Sends a file message to the Controller
     * @param filePath The path of the file to send
     * @param to The list of receivers
     */
    public void performSendFileProposal(Path filePath, ArrayList<String> to);

    /**
     * Accept a file proposal. Process it to the Controller.
     * @param filename The name of the file
     * @param fileSize The size of the file
     * @param remoteNetname The name of the remote user
     * @param to The list of receivers
     */
    public void processAcceptFileProposal(String filename, long fileSize, String remoteNetname, ArrayList<String> to);

    /**
     * Refuse a file proposal. Process it to the Controller.
     * @param filename The name of the file
     * @param fileSize The size of the file
     * @param remoteNetname The name of the remote user
     * @param to The list of receivers
     */
    public void processRefuseFileProposal(String filename, long fileSize, String remoteNetname, ArrayList<String> to);
}
